Dynomotion

Group: DynoMotion Message: 3853 From: quelisto Date: 2/11/2012
Subject: 3 Phase BLDC...can't seem to get it to go
Tom: I can't seem to get my BLDC to do much of anything. While I can get the BLDC to cog to a new position via the Step/Move console, I cannot get the motor to commutate via the C program. I have tried various inv_Dist_Per_Cycle values, I've tried setting the input mode to various modes (user input, encoder, etc), etc. I am using the Write3PH function. I am physically connected to the second "half" of the SnapAmp and as such I am using ch1->OutputChan = 10.

My gut feeling is that I am missing some constant somewhere, because there is no movement despite whatever value I use for the firing angle (and yes, I know it is a double precision float, and is in units of cycles). The other half of the Snapamp is running a stepper just fine in any mode I want (open or closed loop), so I do not suspect any hardware issues.

What I am trying to do is manually run the motor through some open loop commutation cycles, read off the Hall states, and build a table in order to use the correct firing "angle". My motor is a 4 pole, as evidenced by the 12 discrete magnetic detents.

Your help would be appreciated.
Group: DynoMotion Message: 3854 From: Tom Kerekes Date: 2/11/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
Hi Erik,
 
I think the first thing to test would be to see if you can simply rotate the motor.
 
There is a C program called AutoPhaseFind.c that is designed to rotate a 3PH Brushless motor like a stepper motor.  No Hall connections or feedback is required for this.  That program expects to have an encoder and an index pulse so it can figure out how many counts per cycle, per rev, and the phasing commutation offset from the index.  Your case is a bit different but regardless if it never sees an index pulse it should rotate slowly forever.  So let's try that first to see if the motor is wired correctly and that we are capable of rotating it like a stepper.
 
I guess that is essentially what you are trying to do.  But you haven't shown how you are trying to do it.  You said you are using ch1->OutputChan=10 but I assume you meant to say ch1->OutputChan0=10
 
The invDistPerCycle parameter is not used in regard to the Write3PH function because you are doing the commutaion angle yourself.
 
So try the AutoPhaseFind.c program first.  You will need to change the defines at the beginning for your case.
 
Regards
TK
 
 
Group: DynoMotion Message: 3856 From: quelisto Date: 2/11/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
Okay, finally, some movement! The motor is moving a considerable distance...a lot more than I would have predicted given the tiny amount that the angle is moved (0.001 cycles per loop), but perhaps what I'm seeing is the rotor snapping to a detent once the magnetic vector has moved over sufficently to overcome the "magnetic stiction".

This helps alot, as I can "fix it 'til it breaks" to figure out what the key factor(s) was/were in getting it to function. Thanks for the suggestion!

-Erik-



--- In DynoMotion@yahoogroups.com, Tom Kerekes <tk@...> wrote:
>
> Hi Erik,
>  
> I think the first thing to test would be to see if you can simply rotate the motor.
>  
> There is a C program called AutoPhaseFind.c that is designed to rotate a 3PH Brushless motor like a stepper motor.  No Hall connections or feedback is required for this.  That program expects to have an encoder and an index pulse so it can figure out how many counts per cycle, per rev, and the phasing commutation offset from the index.  Your case is a bit different but regardless if it never sees an index pulse it should rotate slowly forever.  So let's try that first to see if the motor is wired correctly and that we are capable of rotating it like a stepper.
>  
> I guess that is essentially what you are trying to do.  But you haven't shown how you are trying to do it.  You said you are using ch1->OutputChan=10 but I assume you meant to say ch1->OutputChan0=10
>  
> The invDistPerCycle parameter is not used in regard to the Write3PH function because you are doing the commutaion angle yourself.
>  
> So try the AutoPhaseFind.c program first.  You will need to change the defines at the beginning for your case.
>  
> Regards
> TK
>  
>  
> From: quelisto <quelisto@...>
> To: DynoMotion@yahoogroups.com
> Sent: Saturday, February 11, 2012 5:31 PM
> Subject: [DynoMotion] 3 Phase BLDC...can't seem to get it to go
>
>
>  
> Tom: I can't seem to get my BLDC to do much of anything. While I can get the BLDC to cog to a new position via the Step/Move console, I cannot get the motor to commutate via the C program. I have tried various inv_Dist_Per_Cycle values, I've tried setting the input mode to various modes (user input, encoder, etc), etc. I am using the Write3PH function. I am physically connected to the second "half" of the SnapAmp and as such I am using ch1->OutputChan = 10.
>
> My gut feeling is that I am missing some constant somewhere, because there is no movement despite whatever value I use for the firing angle (and yes, I know it is a double precision float, and is in units of cycles). The other half of the Snapamp is running a stepper just fine in any mode I want (open or closed loop), so I do not suspect any hardware issues.
>
> What I am trying to do is manually run the motor through some open loop commutation cycles, read off the Hall states, and build a table in order to use the correct firing "angle". My motor is a 4 pole, as evidenced by the 12 discrete magnetic detents.
>
> Your help would be appreciated.
>
Group: DynoMotion Message: 3857 From: quelisto Date: 2/11/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
Tom: indeed, the sudden movement of the shaft was due to a toggling over of the armature once the stator magnetic vector moved far enough over. I determined this by varying the amount of angular movement per loop, and changing the delay time. You obviously can speed things up to about 80 rpm or thereabouts before everyting becomes unstable and the rotor just kind of twitches (you can feel the twitching even when the shaft appears to the naked eye to not be moving).

I will probably have some more questions going forward but this is indeed pleasing.
Group: DynoMotion Message: 3858 From: Tom Kerekes Date: 2/11/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
Hi Erik,
 
You may just not be driving with enough current.  This mode of operation is very inefficient just like a stepper motor.  We basically want as much current as possible without burning out the motor.  You should figure out a safe level of continuous current for your motor and then maybe cut that in half.   We are basically microstepping with hundreds of microsteps so the motion should be relatively smooth.  It won't be perfectly smooth because of friction and some cogging, but it shouldn't just snap from pole to pole.
 
Good luck.
TK

Group: DynoMotion Message: 3861 From: oxforduniv Date: 2/12/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
ON a BLDC motor If you short two of the windings and turn it briskly by hand the number of indents felt is the pole count.
There should be half the number of hall electrical cycles/ mech cycle, IOW, on a 8 pole motor, there would be four hall electrical cycles.
Al.

--- In DynoMotion@yahoogroups.com, "quelisto" <quelisto@...> wrote:
>
>
> What I am trying to do is manually run the motor through some open loop commutation cycles, read off the Hall states, and build a table in order to use the correct firing "angle". My motor is a 4 pole, as evidenced by the 12 discrete magnetic detents.
>
> Your help would be appreciated.
>
Group: DynoMotion Message: 3872 From: quelisto Date: 2/12/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
I'm not so sure I agree. Even a 2 pole BLDC has more than 2 detents. I believe this is because, just like on a switched reluctance motor, you have an unequal number of pole pieces on the armature and on the stator. You are moving between local minima of the reluctance cycles, which should be the lowest common multiple of the armature and stator pole counts. So, for a 4 pole armature and a 6 pole stator, I should expect 12 detents.

--- In DynoMotion@yahoogroups.com, "oxforduniv" <oxforduniv@...> wrote:
>
> ON a BLDC motor If you short two of the windings and turn it briskly by hand the number of indents felt is the pole count.
> There should be half the number of hall electrical cycles/ mech cycle, IOW, on a 8 pole motor, there would be four hall electrical cycles.
> Al.
>
> --- In DynoMotion@yahoogroups.com, "quelisto" <quelisto@> wrote:
> >
> >
> > What I am trying to do is manually run the motor through some open loop commutation cycles, read off the Hall states, and build a table in order to use the correct firing "angle". My motor is a 4 pole, as evidenced by the 12 discrete magnetic detents.
> >
> > Your help would be appreciated.
> >
>
Group: DynoMotion Message: 3882 From: oxforduniv Date: 2/13/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
A double beam scope would confirm it, with three resistors connected to each phase to create a virtual neutral star point, A channel to A phase and the B channel an one Hall output.
Al.

--- In DynoMotion@yahoogroups.com, "quelisto" <quelisto@...> wrote:
>
> I'm not so sure I agree. Even a 2 pole BLDC has more than 2 detents. I believe this is because, just like on a switched reluctance motor, you have an unequal number of pole pieces on the armature and on the stator. You are moving between local minima of the reluctance cycles, which should be the lowest common multiple of the armature and stator pole counts. So, for a 4 pole armature and a 6 pole stator, I should expect 12 detents.
>
> --- In DynoMotion@yahoogroups.com, "oxforduniv" <oxforduniv@> wrote:
> >
> > ON a BLDC motor If you short two of the windings and turn it briskly by hand the number of indents felt is the pole count.
> > There should be half the number of hall electrical cycles/ mech cycle, IOW, on a 8 pole motor, there would be four hall electrical cycles.
> > Al.
> >
> > --- In DynoMotion@yahoogroups.com, "quelisto" <quelisto@> wrote:
> > >
> > >
> > > What I am trying to do is manually run the motor through some open loop commutation cycles, read off the Hall states, and build a table in order to use the correct firing "angle". My motor is a 4 pole, as evidenced by the 12 discrete magnetic detents.
> > >
> > > Your help would be appreciated.
> > >
> >
>
Group: DynoMotion Message: 3883 From: oxforduniv Date: 2/13/2012
Subject: Re: 3 Phase BLDC...can't seem to get it to go
Forgot to add back feed motor 200rpm is plenty.
Al

--- In DynoMotion@yahoogroups.com, "oxforduniv" <oxforduniv@...> wrote:
>
> A double beam scope would confirm it, with three resistors connected to each phase to create a virtual neutral star point, A channel to A phase and the B channel an one Hall output.
> Al.
>
> --- In DynoMotion@yahoogroups.com, "quelisto" <quelisto@> wrote:
>